home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / vidhrdw / gbusters.c < prev    next >
C/C++ Source or Header  |  2000-01-12  |  2KB  |  97 lines

  1. #include "driver.h"
  2. #include "vidhrdw/konamiic.h"
  3.  
  4.  
  5.  
  6. int gbusters_priority;
  7. static int layer_colorbase[3],sprite_colorbase;
  8.  
  9. /***************************************************************************
  10.  
  11.   Callbacks for the K052109
  12.  
  13. ***************************************************************************/
  14.  
  15. static void tile_callback(int layer,int bank,int *code,int *color)
  16. {
  17.     /* (color & 0x02) is flip y handled internally by the 052109 */
  18.     *code |= ((*color & 0x0d) << 8) | ((*color & 0x10) << 5) | (bank << 12);
  19.     *color = layer_colorbase[layer] + ((*color & 0xe0) >> 5);
  20. }
  21.  
  22. /***************************************************************************
  23.  
  24.   Callbacks for the K051960
  25.  
  26. ***************************************************************************/
  27.  
  28. static void sprite_callback(int *code,int *color,int *priority)
  29. {
  30.     *priority = (*color & 0x30) >> 4;
  31.     *color = sprite_colorbase + (*color & 0x0f);
  32. }
  33.  
  34.  
  35. /***************************************************************************
  36.  
  37.     Start the video hardware emulation.
  38.  
  39. ***************************************************************************/
  40.  
  41. int gbusters_vh_start(void)
  42. {
  43.     layer_colorbase[0] = 48;
  44.     layer_colorbase[1] = 0;
  45.     layer_colorbase[2] = 16;
  46.     sprite_colorbase = 32;
  47.  
  48.     if (K052109_vh_start(REGION_GFX1,NORMAL_PLANE_ORDER,tile_callback))
  49.         return 1;
  50.     if (K051960_vh_start(REGION_GFX2,NORMAL_PLANE_ORDER,sprite_callback))
  51.     {
  52.         K052109_vh_stop();
  53.         return 1;
  54.     }
  55.  
  56.     return 0;
  57. }
  58.  
  59. void gbusters_vh_stop(void)
  60. {
  61.     K052109_vh_stop();
  62.     K051960_vh_stop();
  63. }
  64.  
  65.  
  66. void gbusters_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh)
  67. {
  68.     K052109_tilemap_update();
  69.  
  70.     palette_init_used_colors();
  71.     K051960_mark_sprites_colors();
  72.     if (palette_recalc())
  73.         tilemap_mark_all_pixels_dirty(ALL_TILEMAPS);
  74.  
  75.     tilemap_render(ALL_TILEMAPS);
  76.  
  77.     /* sprite priority 3 = disable */
  78.     if (gbusters_priority)
  79.     {
  80. //        K051960_sprites_draw(bitmap,1,1);    /* are these used? */
  81.         K052109_tilemap_draw(bitmap,2,TILEMAP_IGNORE_TRANSPARENCY);
  82.         K051960_sprites_draw(bitmap,2,2);
  83.         K052109_tilemap_draw(bitmap,1,0);
  84.         K051960_sprites_draw(bitmap,0,0);
  85.         K052109_tilemap_draw(bitmap,0,0);
  86.     }
  87.     else
  88.     {
  89. //        K051960_sprites_draw(bitmap,1,1);    /* are these used? */
  90.         K052109_tilemap_draw(bitmap,1,TILEMAP_IGNORE_TRANSPARENCY);
  91.         K051960_sprites_draw(bitmap,2,2);
  92.         K052109_tilemap_draw(bitmap,2,0);
  93.         K051960_sprites_draw(bitmap,0,0);
  94.         K052109_tilemap_draw(bitmap,0,0);
  95.     }
  96. }
  97.